package com.cw.jeeyt.service.intf.system;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.cw.jeeyt.service.bo.system.SystemTableInfoBo;
import com.cw.lang.mybatis.dto.PageInfo;

/**
 * 表模型信息业务接口
 * @author chenw
* @version 1.0.0
 */
public interface SystemTableInfoService {
    /**
     * 根据主键查询表模型信息
     *
     * @param id 主键
     * @return
     */
    SystemTableInfoBo getSystemTableInfoById(String id) throws Exception;

    /**
     * 删除表模型信息
     *
     * @param systemTableInfoBo
     */
    void deleteSystemTableInfo(SystemTableInfoBo systemTableInfoBo) throws Exception;

    /**
     * 更新表模型信息
     *
     * @param systemTableInfoBo
     */
    void updateSystemTableInfo(SystemTableInfoBo systemTableInfoBo) throws Exception;

    /**
     * 新增表模型信息
     *
     * @param systemTableInfoBo
     * @return
     */
    String insertSystemTableInfo(SystemTableInfoBo systemTableInfoBo) throws Exception;

    /**
     * 分页查询表模型信息
     *
     * @param systemTableInfoBo
     * @param startNum
     * @param pageSize
     * @return
     * @throws Exception
     */
    PageInfo<SystemTableInfoBo> queryByPage(SystemTableInfoBo systemTableInfoBo, Integer startNum, Integer pageSize)
    throws Exception;

    /**
     * 自动生成选中的表的代码
     *
     * @param tableIds 表id集合
     * @param generateType 生成代码方式
     * @throws Exception
     */
    void generateCode(String tableIds, String moduleId, String generateType, HttpServletRequest request,
        HttpServletResponse response) throws Exception;

    /**
     * 自动生成模块下的所有表的代码
     *
     * @param moduleId
     * @param generateType
     * @param request
     * @param response
     */
    void generateAllCode(String moduleId, String generateType, HttpServletRequest request, HttpServletResponse response)
    throws Exception;

    /**
     * 更新表模型中的主键id
     *
     * @param tableId 表模型id
     * @param pkId 表模型主键id
     * @param columnType 表模型字段类型
     * @throws Exception
     */
    void updatePkId(String tableId, Long pkId, String columnType) throws Exception;

    /**
     * 同步数据库信息到表模型信息、表模型字段信息
     *
     * @param tableIds
     * @param moduleId
     * @throws Exception
     */
    void importDatabaseTableInfo(String tableIds, String moduleId) throws Exception;

    /**
     * 查询模块下的所有表信息
     *
     * @param moduleId
     * @return
     */
    List<SystemTableInfoBo> queryListByModuleId(String moduleId) throws Exception;

    /**
     * 查询所有表信息
     *
     * @return
     */
    List<SystemTableInfoBo> querySystemTableInfoList() throws Exception;

    /**
     * 清空模块对应数据库信息
     *
     * @param moduleId
     * @return
     */
    boolean clearDatabaseInfo(String moduleId) throws Exception;
}
